﻿namespace Netbits.Common.General.CommandLine
{
	/// <summary>
	/// Interface for command-line argument.
	/// </summary>
	public interface IArgument
	{
		/// <summary>
		/// Return the short name of the argument.
		/// </summary>
		string ShortName
		{
			get;
		}

		/// <summary>
		/// Return the description of the argument or set this.
		/// </summary>
		string Description
		{
			get;
			set;
		}

		/// <summary>
		/// Return if this argument is set
		/// </summary>
		bool IsSet
		{
			get;
		}

		/// <summary>
		/// Return if this argument is required or set this
		/// </summary>
		bool Required
		{
			get;
			set;
		}

		/// <summary>
		/// Parse the specified argument value
		/// </summary>
		/// <param name="Value_">Value to parse.</param>
		void Parse( string Value_ );
	}
}
